
#include "stm32f10x.h"
#include "IOCfg.h"
#include "DxOutput_LED.h"






void Led_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;

    RCC_APB2PeriphClockCmd(APB2Periph_LED, ENABLE);

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

    GPIO_InitStruct.GPIO_Pin  = GPIO_PIN_LED_YELLOW;
    GPIO_Init(GPIO_GROUP_LED_YELLOW, &GPIO_InitStruct);
    GPIO_SetBits(GPIO_GROUP_LED_YELLOW, GPIO_PIN_LED_YELLOW);

    GPIO_InitStruct.GPIO_Pin  = GPIO_PIN_LED_RED;
    GPIO_Init(GPIO_GROUP_LED_RED, &GPIO_InitStruct);
    GPIO_SetBits(GPIO_GROUP_LED_RED, GPIO_PIN_LED_RED);
}





void delay(int cnt)
{
    int i;
    
    for(i = 0; i < cnt; i++)
    {
    }
}

void Led_toggle(void)
{
    GPIO_SetBits(GPIOB, GPIO_Pin_5);
    GPIO_SetBits(GPIOE, GPIO_Pin_5);
    delay(3000000);
    
    GPIO_ResetBits(GPIOB, GPIO_Pin_5);
    GPIO_ResetBits(GPIOE, GPIO_Pin_5);
    delay(3000000);
}





void LED_SetLEDStatus(int LED_Type, int turn_on)
{
    switch(LED_Type)
    {
    case LED_YELLOW:
        if(turn_on == 0)
        {
            GPIO_SetBits(GPIO_GROUP_LED_YELLOW, GPIO_PIN_LED_YELLOW);
        }
        else
        {
            GPIO_ResetBits(GPIO_GROUP_LED_YELLOW, GPIO_PIN_LED_YELLOW);
        }
    break;
    
    case LED_RED:
        if(turn_on == 0)
        {
            GPIO_SetBits(GPIO_GROUP_LED_RED, GPIO_PIN_LED_RED);
        }
        else
        {
            GPIO_ResetBits(GPIO_GROUP_LED_RED, GPIO_PIN_LED_RED);
        }
    break;
    }
}

int LED_GetLEDStatus(int LED_Type)
{
    int status;
    
    switch(LED_Type)
    {
    case LED_YELLOW:
        status = GPIO_ReadOutputDataBit(GPIO_GROUP_LED_YELLOW, GPIO_PIN_LED_YELLOW);
        status = !status;
    break; 
    
    case LED_RED:
        status = GPIO_ReadOutputDataBit(GPIO_GROUP_LED_RED, GPIO_PIN_LED_RED);
        status = !status;
    break;
    }
    
    return status;
}

